From: Keir Fraser Date: Fri, 25 Apr 2008 12:27:19 +0000 (+0100) Subject: shadow: Fix TLB flushing in the second pass of sh_prealloc() in the X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14215^2~122 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=4da59282e0ababf2eeda9b2f70d708db47626971;p=xen.git shadow: Fix TLB flushing in the second pass of sh_prealloc() in the case where multiple vcpus use the same pagetables. Signed-off-by: Tim Deegan --- diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c index 1280ef695b..3769721198 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -781,7 +781,6 @@ static void _shadow_prealloc( struct vcpu *v, *v2; struct list_head *l, *t; struct shadow_page_info *sp; - cpumask_t flushmask = CPU_MASK_NONE; mfn_t smfn; int i; @@ -819,12 +818,11 @@ static void _shadow_prealloc( { shadow_unhook_mappings(v, pagetable_get_mfn(v2->arch.shadow_table[i])); - cpus_or(flushmask, v2->vcpu_dirty_cpumask, flushmask); /* See if that freed up enough space */ if ( space_is_available(d, order, count) ) { - flush_tlb_mask(flushmask); + flush_tlb_mask(d->domain_dirty_cpumask); return; } }